
var serverURL = "";
var resID = "";            //设置资源ID
var typeCode ="";          //业务类型；
var currPage = "";         //当前页面;
var isSearch = "";         //是否查询标志；
var editMode = "";         //编辑模式：新增或修改；
var autoEditFlg ="true";   //这一行一定要加，为了文档涮新后自动进入编辑状态
var isSaveEx = false;      //是否需要打包扩展
var isSetFieldEx = false;  //添加字段域扩展;
var lastModified ="";      //最后编辑时间

var editFlag = false;                  //缺省进入本页面为不可编辑状态
var hasZhengWen  = false;              //缺省没有正文
var hasAttach = false;                 //缺省没有附件
var SE_ATTACH_Flag = true;            //缺省附件可编辑;
var nigaoEditFlg ="";

var listUrl = '';
var defaultVO = '';                    //xml打包时的二级目录；影响后台取值;
var addAction = '';
var editAction = '';
var ev_action = editAction;           //缺省command 为edit;

var tXML= null;
var docView = null;
var attachment = null;
var resEditLock = null;
var fv = null;

function requestLock()
{
    var flgLock=resEditLock.requestEditLock("/serviceLocator?action=requestEditLock&businessType="+typeCode+"&resourceID="+resID+"&lastModified="+lastModified);    //申请编辑锁
    if(!flgLock )
    {
       alert(resEditLock.message);
       return false;
     }
    return true;
  }

/**
离开时执行释放编辑锁
*/
function docUnload(){

  docView.viewState(docView.VIEW_STATE_MINIMIZED);
  docView.ClearData();

  releaseLock();
}

/**
释放编辑锁,在退出编辑状态或离开页面是要调用到
*/
  function releaseLock(){
    if(resEditLock.resLockLsh!="")
    {
       resEditLock.releaseEditLock("/serviceLocator?action=releaseEditLock&resLockLsh="+resEditLock.resLockLsh);
    }
  }


/**
  XML打包并提交服务器处理操作;
*/
function xmldoc()
{
  form1.Attachment.PrepareData(); /*初始化，准备Http报文*/
  form1.Attachment.SetSessionID(sessionID);
  tXML.clearElement();

  tXML.createFormHeard("FieldFrm");
  tXML.CreateValueObject("FieldFrm",defaultVO);
  tXML.CreateFieldResult("FieldFrm",defaultVO,"R1");
  for (i=0;i<fieldsArr.length;i++) {
     if (document.all(fieldsArr[i])!= null && document.all(fieldsArr[i]).value !="")
     {
       tXML.appendField("FieldFrm",defaultVO,"R1",fieldsArr[i],document.all(fieldsArr[i]).value);
     }
  }
  if (isSaveEx) {
     xmldocEx();
  }

//考虑附件打包的情况；
   if (hasAttach)
   {
      tXML.appendField("FieldFrm",defaultVO,"R1","nigaoEditFlg",nigaoEditFlg);   //设置拟稿编辑删除所有附件标志；

       tXML.createFormHeard("attachmentFrm");
       tXML.CreateValueObject("attachmentFrm","attVO");
       reCount=0;

//考虑附件上传的问题，有几种情况；
//第一、新增上传时，页面不刷新，所有的附件都在客户端，所以操作为全删除全上传方式。
//第二、修改上传时，页面不刷新，设置了删除标志的附件必须通过服务器端执行删除操作，
//只有在客户端的附件才需要上传，
       for(var i=0;i<attachment.getAttachMentCount();i++)
       {
          var tmpobj=attachment.fndbyIndex(i);
          if(tmpobj!=null){
            if(tmpobj.getDelFlg()=="Y")   //如果是del attach
            {
               tXML.CreateFieldResult("attachmentFrm","attVO","R"+reCount);
               tXML.appendField("attachmentFrm","attVO","R"+reCount,"action","del");
               tXML.appendField("attachmentFrm","attVO","R"+reCount,"attachID",tmpobj.getAttachMentID());
               tXML.appendField("attachmentFrm","attVO","R"+reCount,"FileName",tmpobj.getFileName());
               tXML.appendField("attachmentFrm","attVO","R"+reCount,"ExtendName",tmpobj.getExtendName());
               reCount++;
           }
           else
           {
               if (editMode == "add")                      //全部需要打包；
                {
                  var fileValue="";
                  tXML.CreateFieldResult("attachmentFrm","attVO","R"+reCount);
                  tXML.appendField("attachmentFrm","attVO","R"+reCount,"action","add");
                  tXML.appendField("attachmentFrm","attVO","R"+reCount,"attachID",tmpobj.getAttachMentID());
                  tXML.appendField("attachmentFrm","attVO","R"+reCount,"FileName",tmpobj.getFileName());
                  tXML.appendField("attachmentFrm","attVO","R"+reCount,"ExtendName",tmpobj.getExtendName());
                  //add by elegantyu 2004-12-09
                  tXML.appendField("attachmentFrm","attVO","R"+reCount,"Forminstanceid",tmpobj.getForminstanceid());

                  form1.Attachment.AppendAttachment(tmpobj.getFileURL(), "att"+reCount, 1);
                  reCount++;
                 }
                 else
                   if(editMode =="edit" && tmpobj.getServer_fileFlg()=="N")   //是否要打包附件 ,不在服务端将打包
                    {
                         var fileValue="";
                         tXML.CreateFieldResult("attachmentFrm","attVO","R"+reCount);
                         tXML.appendField("attachmentFrm","attVO","R"+reCount,"action","add");
                         tXML.appendField("attachmentFrm","attVO","R"+reCount,"attachID",tmpobj.getAttachMentID());
                         tXML.appendField("attachmentFrm","attVO","R"+reCount,"FileName",tmpobj.getFileName());
                         tXML.appendField("attachmentFrm","attVO","R"+reCount,"ExtendName",tmpobj.getExtendName());
                         //add by elegantyu 2004-12-09
                  	 tXML.appendField("attachmentFrm","attVO","R"+reCount,"Forminstanceid",tmpobj.getForminstanceid());

                         form1.Attachment.AppendAttachment(tmpobj.getFilePath(), "att"+reCount, 1);
                         reCount++;
                     }


                  } //end if
                }  //end if
             }  //end for
       } //end if

//tXML.sendXML("/acxml.jsp");
  var xmlHead="<?xml version=\"1.0\" encoding=\"UTF-8\"?>";

  form1.Attachment.AppendFieldData(xmlHead+tXML.showStr(), "xmlStr");
  var status=0;
  doAction =serverURL+ "/serviceLocator?action="+ev_action;
  alert(doAction);
  status=form1.Attachment.postData(doAction, 'POST');

 // status=form1.Attachment.postData("http://localhost/acxml.jsp", 'POST');
  tXML.resultDispose(status,form1.Attachment.GetResponseInfo());
  form1.Attachment.ClearData();   /*清除Http报文*/
}

/**
*   按纽事件（公用）
*/
function buttonEve(input){

   if(input == 'savebtn'){
      changeforminstanceid();
      editFlag = false;
      witheditflag=false;//在attachment.js里面定义，执行保存操作之后又重新将他们两个设为false
      saveFlg=true;
      if (saveFlg==true){
           document.form1.submit();
      }
   }


   //保存为草稿add by elegantyu---------
   if (input == 'saveDraftbtn')
   {
      if (isSetFieldEx)
          SetFieldEx();
      if(fv.checkValue(window))
      {
          xmldoc();
         editFlag = false;
         //add by elegantyu 2004-12-14
         witheditflag=false;//在attachment.js里面定义，执行保存操作之后又重新将他们两个设为false

          if (saveFlg==true){
             return true;
          }
          else{
             rwstatus();
//			if(parent.document.getElementById("savebtn")!=null)//针对以前的，附件的编辑按钮在qsps_form页面里面
//            { 
//	            parent.document.getElementById("savebtn").setOnaction("buttonEve('editbtn')");
//	            parent.document.getElementById("savebtn").setCaption("<img align='absbottom' src='/image/kx_edit.gif' border='0'/> 附件管理");
//	            parent.document.getElementById("savebtn").id = "editbtn";
//			}
//			if(document.getElementById("savebtn")!=null)//现在将对应的按钮放到qsps_form_child页面的附件布局部分里面
//            { 
//	            document.getElementById("savebtn").setOnaction("buttonEve('editbtn')");
//	            document.getElementById("savebtn").setCaption("<img align='absbottom' src='/image/kx_edit.gif' border='0'/> 附件管理");
//	            document.getElementById("savebtn").id = "editbtn";
//			}
            if (hasAttach)
            {
//                if (SE_ATTACH_Flag) {
                  attachment.setMode("view");
//                  attachment.attachMentGrid();
                  //modified by elegantyu 2004-12-10
		  			attachment.attachMentGridByFormId();
//                }
            }
             return false;
          }
      }
       else
      {
           return false;
      }

   }
   //-------add by elegantyu end

   if (input =='editbtn')
   {
        if (requestLock())    //申请编辑锁
         {
            editFlag = true;
            rwstatus();
            if(parent.document.getElementById("editbtn")!=null)//针对以前的，附件的编辑按钮在qsps_form页面里面
            {
	            parent.document.getElementById("editbtn").setOnaction("buttonEve('savebtn')");
	            parent.document.getElementById("editbtn").setCaption("<img align='absbottom' src='/image/kx_save.gif' border='0'/> 保存附件");
	            parent.document.getElementById("editbtn").id = "savebtn";
            }
            if(document.getElementById("editbtn")!=null)//现在将对应的按钮放到qsps_form_child页面的附件布局部分里面
            {
	            document.getElementById("editbtn").setOnaction("buttonEve('savebtn')");
	            document.getElementById("editbtn").setCaption("<img align='absbottom' src='/image/kx_save.gif' border='0'/> 保存附件");
	            document.getElementById("editbtn").id = "savebtn";
            }
            if (hasAttach)
            {
//                if (SE_ATTACH_Flag) {
                  attachment.setMode("edit");
//                  attachment.attachMentGrid();
		  //modified by elegantyu 2004-12-10
		  			attachment.attachMentGridByFormId();
//                }
            }
         }
   }

    if (input == 'nextbtn') {
      //判断所有的需要填写的环节单是否全部保存保存，如果全部保存，返回true，如果只有一个没保存，问是否要保存，并根据该条件执行下一步操作
      var savenode=judgeallform();
      //alert(savenode+'--node')
      document.all("parentredirect").value="";//首先清空该 控件里面的值
      if(savenode)
      {
         //点击下一步的时候，是否要执行保存全局单的操作,因为如果全局单和环节单都要保存的话，两个是不同的command，所以不能同时提交
		 var saveglobals=globalvaribleischange();
		 //alert(saveglobals+'--global')
      
         //add by elegantyu2004-12-14，当点击保存按钮之后，editFlag就被设置成false了，此时如果在增加或修改附件，然后点击下一步的时候，
         //就不会执行保存操作，所以，加上了下面的判断，当添加文件、编辑、删除文件的时候都会将editFlag从false设置为true
         //，执行保存操作之后又重新将他们两个设为false
	     if(editMode=="edit"&&witheditflag)
	        editFlag=true;
	
		if(saveglobals)//保存全局单
		{
			if(globalnosavenumber==0)//没有要保存的环节单
			{
				// <--  先检查流程状态，再进行【下一步】操作，Jeoky.Huang 2004-11-25 修改
		       var targetUrl="/WfcCTR_NextStep?action=startNextStep&title=" + form1.title.value+"&isSearch="+isSearch+"&typeCodeInt="+typeCodeInt;
		       var newtargetUrl="/serviceLocator?action=checkFlowStatus&checkmsgstatus=DB&msgLsh="+msgLsh+"&resourceID=" + resID + "&targetUrl=" + targetUrl;
		       //-->
				//当保存附件的时候
				//因为当附件改动并且保存之后，如果点下一步的时候不保存附近，会报没有权限访问document.form1.submit();，
				//但是忽略错误在点一次就可以了，所以，此时，只要附件是edit状态的，也就是附近保存之后也再保存一次
				if ( (editMode=="edit") || editMode=="add")//if ( (editFlag && editMode=="edit") || editMode=="add")
				{
					if(checkNoNull() && ensureBuziTypeSelection())
					{
					    document.all("parentredirect").value="saveglobal";
						if ( !buttonEve('savebtn') )//该方法将一起保存全局单和附件
		             	{
			             	//document.all("parentredirect").value="";
			             	return;
		             	}
		             	 document.all("parentredirect").value=""
		             	 alert('全局单保存成功！')
		             	 parent.location.href=newtargetUrl;
					}
					
				}
				else//当不保存附件的时候
				{
					if(checkNoNull() && ensureBuziTypeSelection())
					{
					//因为当附件改动并且保存之后，如果点下一步的时候不保存附近，会报没有权限访问document.form1.submit();，
					//但是忽略错误在点一次就可以了，所以，此时，只要附件是edit状态的，也就是附近保存之后也再保存一次,所以当附件为编辑状态，无论保存与否，都放在
					//上面一种情况执行，下面的代码只执行没有点击上传附近按钮的时候的情况
					//alert('----normal--不保存附件'+newtargetUrl)
					document.all("parentredirect").value=newtargetUrl;
					   document.form1.action="/serviceLocator?action=OrderContentModelIns&cmd=modGlobalForm&fromjs=true;";
					   document.form1.submit();
					}
					
				}
			}
			else//环节单需要保存的时候
			{
			// <--  先检查流程状态，再进行【下一步】操作，Jeoky.Huang 2004-11-25 修改
		       var targetUrl="/WfcCTR_NextStep?action=startNextStep&title=" + form1.title.value+"&isSearch="+isSearch+"&typeCodeInt="+typeCodeInt;
		       var newtargetUrl="/serviceLocator?action=checkFlowStatus&checkmsgstatus=DB&msgLsh="+msgLsh+"&resourceID=" + resID + "&targetUrl=" + targetUrl;
		       //-->
				//当保存附件的时候,将全局单一起保存
				
				if ( (editFlag && editMode=="edit") || editMode=="add")
				{
					if(shownodeHtml.checknonull())//调用shownodehtml里面的判断方法
					if(checkNoNull() && ensureBuziTypeSelection())
					{
					document.all("parentredirect").value="saveglobal";
						if ( !buttonEve('savebtn') )//该方法将一起保存全局单和附件
		             	{
			             	//document.all("parentredirect").value="";
			             	return;
		             	}
		             	document.all("parentredirect").value=""
		             	//开始保存环节单
		             	nextstepurl=newtargetUrl;
			   		    shownodeHtml.iframeaction();
					}
					
				}
		        else//不保存附件的时候
		        {					
			        alert('环节单和全局单、全局变量都要保存，请先执行环节单或全局单的保存操作，再执行下一步操作！')
			        return;
		        }
			}
		}//end保存全局单
		else//不保存全局单
		{
		   if(globalnosavenumber==0)//没有要保存的环节单
		   {
		   	   if ( (editFlag && editMode=="edit") || editMode=="add")
		       {
		          if ( !buttonEve('savebtn') )
		             return;
		        }
		       // <--  先检查流程状态，再进行【下一步】操作，Jeoky.Huang 2004-11-25 修改
		       var targetUrl="/WfcCTR_NextStep?action=startNextStep&title=" + form1.title.value+"&isSearch="+isSearch+"&typeCodeInt="+typeCodeInt;
		       parent.location.href="/serviceLocator?action=checkFlowStatus&checkmsgstatus=DB&msgLsh="+msgLsh+"&resourceID=" + resID + "&targetUrl=" + targetUrl;
		       //-->
		   }//end if
		   else
		   {
		   		// <--  先检查流程状态，再进行【下一步】操作，Jeoky.Huang 2004-11-25 修改
		       var targetUrl="/WfcCTR_NextStep?action=startNextStep&title=" + form1.title.value+"&isSearch="+isSearch+"&typeCodeInt="+typeCodeInt;
		       var newtargetUrl="/serviceLocator?action=checkFlowStatus&checkmsgstatus=DB&msgLsh="+msgLsh+"&resourceID=" + resID + "&targetUrl=" + targetUrl;
		       //-->
			   if(shownodeHtml.checknonull())//调用shownodehtml里面的判断方法
			   {
				   if ( (editFlag && editMode=="edit") || editMode=="add")
			       {
			          if ( !buttonEve('savebtn') )
			             return;
			        }
				   nextstepurl=newtargetUrl;
				   //提交正确表单数据之前，屏蔽“下一步”按钮，防止多次提交数据出现多张表单的情况
				   parent.document.all("nextbtn").setEnabled(false);
				   shownodeHtml.iframeaction();
			   }
		   }//end else
		}//end 不保存全局单
	 }
   }

    if (input == 'endflowbtn') {
       parent.location.href="/WfcCTR_NextStep?action=endFlow&title=" + form1.title.value+"&isSearch="+isSearch+"&typeCodeInt="+typeCodeInt;
    }

   if(input=='reprocess')   /*重处理*/
   {
     if(confirm("请确定要重处理吗?")){
       // <--  先检查流程状态，再进行【重处理】操作，Jeoky.Huang 2004-11-25 修改
       var targetUrl="/serviceLocator?action=reprocess&resourceID="+resID+"&typeCodeInt="+typeCodeInt;
       parent.location.href="/serviceLocator?action=checkFlowStatus&checkmsgstatus=YB&msgLsh="+msgLsh+"&resourceID=" + resID + "&targetUrl=" + targetUrl;
       //-->
     }
   }

   if(input=='subflowman')   /*子流程管理*/
   {
     // <--  先检查流程状态，再进行【子流程管理】操作，Jeoky.Huang 2004-11-25 修改
     var targetUrl="/WfcUI/WfcUI_ManSubFlow.jsp?flowCode="+flowCode+"&nodeLsh="+nodeLsh+"&flowLsh="+flowLsh+"&msgLsh="+msgLsh+"&typeCodeInt="+typeCodeInt+"&resourceID="+resID+"&typeCode="+typeCode;
     parent.location.href="/serviceLocator?action=checkFlowStatus&checkmsgstatus=DBDTYB&msgLsh="+msgLsh+"&resourceID=" + resID + "&targetUrl=" + targetUrl;
     //-->
   }

 if (input == 'exitbtn')
 {
   //add by elegantyu2004-12-14，当点击保存按钮之后，editFlag就被设置成false了，此时如果在增加或修改附件，然后点击下一步的时候，
//    就不会执行保存操作，所以，加上了下面的判断，当添加文件、编辑、删除文件的时候都会将editFlag从false设置为true
//，执行保存操作之后又重新将他们两个设为false
      if(editMode=="edit"&&witheditflag)
      editFlag=true;

     if (editMode=="edit" &&  editFlag)
       {
          if (confirm("您是否需要在退出之前保存您的修改？"))
              if (buttonEve('savebtn')!=true)
                  return;
        }
   
   if(typeCodeInt!="")
   {
   		/*=========== START(#1) added or modified by huangzhijing on 2006-11-07 ===========*/
   		parent.location = "/serviceLocator?action=navControl&isSearch="+isSearch+"&typeCodeInt="+typeCodeInt+"&inCurrentPage="+inCurrentPage;
		/*=========== END(#1)   added or modified by huangzhijing on 2006-11-07 ===========*/
   }
   else
   {    
   		
	    if (parent.openSource == "A" || parent.openSource == "P" || parent.openSource == "O" )
	    {
	     if (parent.openSource == "A" ) 
		     {
		       parent.location = "/serviceLocator?action=navControl&typeCodeInt=0&isSearch="+isSearch;
		     }
	      else if (parent.openSource == "P" ) 
		      {
		         parent.location = "/serviceLocator?action=navControl&typeCodeInt=1&isSearch="+isSearch;
		      }
	      else if (parent.openSource == "O" ) 
		      {
		         parent.location = "/serviceLocator?action=navControl&typeCodeInt=2&isSearch="+isSearch;
		      }
	    }
	    else
		    {
		       parent.location.href =listUrl;
		    }
   
  }
}
}

function waitglobal()
{
releaseLock();
if(resEditLock=="")
return true;
else
return setInterval("waitglobal()",1000);
}
